package 反射.作用_应用场景;

public class Test {
    public static void main(String[] args) throws Exception {
        // 反射的作用
        // 1. 基本作用: 可以得到一个类的全部成分然后操作
        // 2. 可以破坏封装性
        // 3. 最重要的用途: 适合做java的框架, 基本上, 主流的框架都会基于反射设计出一些通用的功能

        // 案例: 使用反射做一个简易版的框架
        // 需求: 对于任意一个对象, 该框架都可以把对象的字段名和对应的值, 保存到文件中去

        // 实现步骤:
        // 1. 定义一个方法, 可以就收任意对象
        // 2. 每收到一个对象后, 使用反射获取该对象的Class对象, 然后获取全部的成员变量
        // 3. 遍历成员变量, 然后提取成员变量在该对象中的具体值
        // 4. 把成员变量名, 和其值, 写出到文件中去即可

        // 实现:
        Student s1 = new Student("黑马吴彦祖", 45,'男',185.3,"睡觉");
        Teacher t1 = new Teacher("波妞", 9999.9);

        ObjectFrame.saveObject(s1);
        ObjectFrame.saveObject(t1);
    }
}
